home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Toolbox / Visual Basic Toolbox (P.I.E.)(1996).ISO / internet / cswsk110 / cswfaq.txt < prev    next >
Text File  |  1995-12-07  |  18KB  |  372 lines

  1.                                SocketWrench/VB
  2.                           Frequently Asked Questions
  3.             Copyright (c) 1995, Catalyst Software. All rights reserved.
  4.  
  5.     This document will provide answers to those questions most frequently
  6.     asked by those developers who are using SocketWrench/VB or are
  7.     interested in writing Visual Basic programs against the Windows
  8.     Sockets API.
  9.  
  10.     For specific information about control properties and events, please
  11.     refer to the documentation and help files included with SocketWrench.
  12.  
  13.     This FAQ is broken into several sections:
  14.  
  15.         I.  General Information
  16.     II. Development Questions
  17.  
  18. I.  GENERAL INFORMATION
  19.  
  20. 1.  What exactly is SocketWrench/VB?
  21.  
  22.     SocketWrench/VB is a custom control which uses the Windows Sockets
  23.     API to provide basic TCP/IP networking functionality to your
  24.     application. Both client and server capability is provided through
  25.     the control, as well as support for both TCP and UDP protocols.
  26.     Virtually any type of application which needs to communicate with
  27.     another, either on a local network or over the Internet, can be
  28.     written using SocketWrench.
  29.  
  30. 2.  What is the difference between SocketWrench and other commercial
  31.     or shareware controls that are available?
  32.  
  33.     SocketWrench is a complete, fully functional control that supports
  34.     the complete Windows Sockets API. Unlike many other controls that
  35.     break functionality into several components (such as one control
  36.     for TCP, another for UDP and yet another for server functionality)
  37.     SocketWrench provides everything that you need in one control.
  38.  
  39.     Another significant difference is that SocketWrench is free.
  40.     There are no licensing or runtime fees, and the control can be
  41.     used to develop any type of package (commercial, in-house, shareware
  42.     or freeware). Refer to the licensing agreement included with
  43.     the package for all of the details.
  44.  
  45. 3.  Why was SocketWrench made freely available?
  46.  
  47.     We decided to make SocketWrench freely available to developers in
  48.     order to introduce them to our company, Catalyst Software, and
  49.     contribute something to the community of developers that we will
  50.     ultimately be marketing to. It also provided us with critical
  51.     feedback on the features and functionality of the control. This is
  52.     important because our commercial product, Catalyst SocketTools,
  53.     shares the many of the features found in SocketWrench.
  54.  
  55. 4.  If SocketWrench is free, why is there a registration form?
  56.  
  57.     Even though we are making SocketWrench freely available, we would
  58.     still like to hear from those developers who are using it. The
  59.     registration form lets us know who you are, what platforms you're
  60.     using SocketWrench on, and what you think about the product. It
  61.     also gives us an opportunity to let you know when other Catalyst
  62.     products are available that you might be interested in.
  63.  
  64. 5.  What is SocketTools?
  65.  
  66.     Catalyst SocketTools is a collection of TCP/IP controls written
  67.     for developers who need higher-level access to specific application
  68.     protocols. Included in the package are controls for file transfer
  69.     (FTP), remote login and terminal emulation (TELNET), sending and
  70.     receiving electronic mail (SMTP/POP3), accessing USENET newsgroups
  71.     (NNTP) and the World Wide Web (HTTP/HTML).
  72.  
  73. 6.  What platforms can SocketWrench be used on?
  74.  
  75.     SocketWrench will work with any TCP/IP stack that provides a
  76.     Windows Sockets 1.1 compliant library. This includes the TCP/IP
  77.     stacks that are part of the base operating system for Windows 95
  78.     and Windows NT. A free 32-bit TCP/IP stack can be obtained from
  79.     Microsoft for Windows for Workgroups 3.11.
  80.  
  81.     SocketWrench can be used with Visual Basic 2.0 or later, including
  82.     the 16-bit version of Visual Basic 4.0. Since VBXs are 16-bit
  83.     controls, it cannot be used with the 32-bit version of VB 4.0.
  84.  
  85. 7.  Will there be a 32-bit version of SocketWrench?
  86.  
  87.     Absolutely. A 32-bit OCX (OLE custom control) is included in
  88.     SocketTools and will be available shortly. For further information
  89.     about the availability of the OCX, send e-mail to catsoft.com or
  90.     contact us by FAX or telephone. The README file includes this
  91.     contact information.
  92.  
  93. 8.  What is the current version of SocketWrench and where can I
  94.     download the product?
  95.  
  96.     The current version of the control is 1.1, and is available at
  97.     a number of sites. On CompuServe it is available in the MSBASIC
  98.     forum as CSWSK110.ZIP. On the Internet, it is available on your
  99.     local SimTel mirror site in the /win3/visbasic directory as
  100.     cswsk110.zip. You can always find the latest copy of the package
  101.     on the Catalyst Software Web site at http://www.earthlink.net/~catalyst/.
  102.  
  103. 9.  I want to use SocketWrench in my application, but my employer
  104.     feels uncomfortable with me using free software.
  105.  
  106.     Keep in mind that SocketWrench is part of a commercial package,
  107.     and will be fully supported by Catalyst Software. We would also
  108.     consider selling a source license to qualified organizations
  109.     on a case-by-case basis. Contact our business office for further
  110.     information about source licensing.
  111.  
  112. 10. If I have a problem or question, what is the best way to contact
  113.     you?
  114.  
  115.     The best way to contact Catalyst Software is via e-mail. If you
  116.     have a product-related question, send it to info@catsoft.com.
  117.     If you have a technical support question or problem, you can
  118.     address it to support@catsoft.com.
  119.  
  120.     If you have a technical support problem, please remember to
  121.     include information about what TCP/IP stack you're using along
  122.     with a detailed description of the problem. If possible, a
  123.     sample project that reproduces the problem would be very helpful.
  124.  
  125. II. DEVELOPMENT QUESTIONS
  126.  
  127. 1.  I'm not very familiar with TCP/IP and sockets programming. How
  128.     do you recommend I get started?
  129.  
  130.     Included with SocketWrench is a tutorial in Microsoft Word 6
  131.     format. It's in the file TCPINTRO.DOC, and convers the basics
  132.     of TCP/IP programming with SocketWrench. There are also a number
  133.     of good books available on the subject, with a few of them
  134.     specific to Windows Sockets programming in Visual Basic.
  135.  
  136. 2.  I'm familiar with sockets programming under UNIX, and need to
  137.     write some client applications for Windows. Will your product
  138.     work for me?
  139.  
  140.     Absolutely. If you're familiar with sockets programming under
  141.     UNIX, you should find the control particularly easy to work
  142.     with in creating your client applications with Visual Basic.
  143.  
  144. 3.  I want to use SocketWrench to develop an program which uses the
  145.     XYZ application protocol. How do I do that?
  146.  
  147.     The best resource for learning about the common application
  148.     protocols are RFC's. These Request For Comment documents form
  149.     the foundation of the application protocols used over the
  150.     Internet. There are a great number of them, but some of the
  151.     more common ones are:
  152.  
  153.     RFC 821    Simple Mail Transfer Protocol (SMTP)
  154.         RFC 959    File Transfer Protocol (FTP)
  155.     RFC 977    Network News Transfer Protocol (NNTP)
  156.     RFC 1341   Multipurpose Internet Mail Extensions (MIME)
  157.     RFC 1436   Internet Gopher Protocol
  158.     RFC 1459   Internet Relay Chat Protocol (IRC)
  159.     RFC 1725   Post Office Protocol Version 3 (POP3)
  160.  
  161. 4.  When I try to include SocketWrench in my project, I get an error
  162.     message stating that it cannot load the control. What's wrong?
  163.  
  164.     Check to make sure that a Windows Sockets library is installed
  165.     on the system, and that it's either in the \WINDOWS directory,
  166.     or a directory that's specified in the PATH environment variable.
  167.     The control will fail to load if this library, WINSOCK.DLL,
  168.     cannot be loaded. Also check to make sure that there is enough
  169.     free memory available to load both the control and the Windows
  170.     Sockets library.
  171.  
  172. 5.  When I place the control on a form, I get a general protection
  173.     fault (GPF) right away or shortly afterwards. Why?
  174.  
  175.     Check to make sure that there is only one copy of a Windows
  176.     Sockets library installed on your system, and that the correct
  177.     library is being loaded by the control. You can use the WPS
  178.     utility (included with the Visual Basic 3.0 Professional edition
  179.     or downloadable from Microsoft) to determine where the WINSOCK.DLL
  180.     is being loaded from.
  181.  
  182. 6.  Why do I get errors that some properties in the control could
  183.     not be set when I try to run a program?
  184.  
  185.     This problem manifested itself in early versions of the control
  186.     when it could not determine the local host name. Upgrading to the
  187.     current version of SocketWrench will resolve the problem.
  188.  
  189. 7.  When I place the control on a form, the toolbox icon isn't
  190.     drawn correctly. After that, if I try to place another control
  191.     on the form, Visual Basic will GPF. What's going on?
  192.  
  193.     This is a problem with older versions of the control that would
  194.     attempt to determine the local host name and IP address as soon
  195.     as it was loaded on a form. This caused a problem for those
  196.     developers who only had a dialup SLIP or PPP connection and
  197.     either had a dynamically configurable IP address or relied on
  198.     DNS and did not have any entries in their local hosts file for
  199.     their own system. The current version of the control resolves
  200.     this problem.
  201.  
  202. 8.  I have a dialup connection to the Internet, but don't want to
  203.     have to be connected while I develop my software. Is there
  204.     any way that I can do this with your control?
  205.  
  206.     Included with SocketWrench is a "loopback" Windows Sockets
  207.     library which can be installed on your system. This library
  208.     contains all of the functions of a standard Windows Sockets
  209.     library, but can only be used to exchange data on the local
  210.     system. Unlike some stub libraries which return errors for
  211.     every function, the loopback library will allow you to develop
  212.     and test working software.
  213.  
  214. 9.  I installed SocketWrench, but I don't see the loopback library
  215.     anywhere. How do I install it?
  216.  
  217.     The loopback library is only installed by default if you have
  218.     no Windows Sockets library already present on your system.
  219.     You can install the library by extracting the WINSOCK.DL_ and
  220.     WINSOCK.INI files from the ZIP archive manually. Note that
  221.     the library is compressed, so you will need to run Microsoft's
  222.     EXPAND utility on it.
  223.  
  224. 10. I have a dialup connection to the Internet and I'm using
  225.     Windows 95. I've noticed that some applications will automatically
  226.     bring up the dialer, but SocketWrench doesn't. Why is that?
  227.  
  228.     Because SocketWrench is a 16-bit VBX, it uses the 16-bit Windows
  229.     Sockets library, WINSOCK.DLL. For reasons known only to Microsoft,
  230.     they decided that only the 32-bit socket library would be capable
  231.     of automagically invoking the dialer.
  232.  
  233. 11. Why can I use SocketWrench in my Visual Basic programs without
  234.     any problems, but when I try to use it with Visual C++, I
  235.     get an error?
  236.  
  237.     SocketWrench was developed against the Visual Basic 2.0
  238.     control specification. Unfortunately, Visual C++ only supports
  239.     controls written to the 1.0 specification.
  240.  
  241. 12. When I try to use SocketWrench with Borland's Delphi, the
  242.     control will load, but I'm not able to see any of it's properties.
  243.     And when I try to use it, error messages are displayed. Why?
  244.  
  245.     For the same reason that the control will not work with Visual
  246.     C++, namely because Delphi only supports VBXs written to
  247.     the 1.0 specification.
  248.  
  249. 13. I have Sheridan's VB Assist loaded, and whenever I press the
  250.     right mouse button to look at the control's properties, I
  251.     get a GPF. I can see all the properties in the property box
  252.     and everything is fine if I don't have VB Assist loaded.
  253.  
  254.     SocketWrench implements some custom properties which have the
  255.     same names as standard control properties. This is fine for
  256.     Visual Basic, but seems to confuse VB Assist. Sheridan is
  257.     aware of the problem, so it may have been corrected in the latest
  258.     latest version of their software.
  259.  
  260. 14. Why do I only get empty strings when I read the LocalName or
  261.     LocalAddress properties?
  262.  
  263.     SocketWrench attempts to determine your local host name and
  264.     address by first calling a function to determine your local
  265.     name(through a call to the gethostname() function, and then
  266.     using that name, your IP address through a call to the
  267.     gethostbyname() function.
  268.  
  269.     Some Windows Sockets libraries, notably the one included in
  270.     Novell's Lan Workplace product, will not return the required
  271.     information unless the system has an entry for itself in
  272.     the local hosts file. This problem may also occur if you have
  273.     a dialup network connection, using DNS for name resolution,
  274.     and your host does not have a reverse (PTR) entry in the
  275.     DNS database.
  276.  
  277. 15. When I try to send UDP datagrams using SocketWrench, they are
  278.     never received by the remote host. What's wrong?
  279.  
  280.     Earlier versions of the control would not report any errors if
  281.     it was unable to send or receive a UDP datagram. This problem
  282.     has been corrected, and it is recommended that you upgrade
  283.     to the current release.
  284.  
  285. 16. When I try to use the TINYFTP sample included with SocketWrench,
  286.     I get errors from the server saying that it was unable to
  287.     build a data connection. What does this mean?
  288.  
  289.     There was a bug in the FTPListen() function in the sample program.
  290.     The problem was the creation of the PORT command which tells the
  291.     server what your IP address is and what port you're socket is
  292.     listening on. The code where the CtlData string is being created
  293.     should be changed to the following:
  294.  
  295.         '
  296.     ' Split the local port number into high and low bytes by
  297.     ' converting it to hex, pulling it apart, and then converting
  298.         ' the pieces back to decimal
  299.         '
  300.         HexPort = Hex$(Port)
  301.         If Len(HexPort) = 3 Then HexPort = "0" + HexPort
  302.         CtlData = "PORT " & Address & "," &
  303.         (Val("&h" + Left$(HexPort, 2))) & "," & (Port And &HFF)
  304.  
  305.     The last two lines should be joined, and you will need to declare
  306.     the HexPort variable as a string in the function.
  307.  
  308.     The problem fundamentally exists because port numbers are unsigned
  309.     16-bit integers, but Visual Basic only uses signed integers. The
  310.     conversion to hexadecimal and back works around this limitation.
  311.  
  312. 17. I am using non-blocking sockets in my application and responding
  313.     to Read events in the control. Why do I sometimes get an error
  314.     when I read the RecvData property that says that the socket
  315.     operation would block?
  316.  
  317.     This is a problem with earlier versions of the control and has
  318.     been corrected in the current release. The DataLength argument
  319.     passed to the function would sometimes be incorrect, and by
  320.     setting the RecvLen property to that value, would cause the
  321.     control to attempt to read more data than is available on the
  322.     socket, which would erroneously generate the blocking error
  323.     message.
  324.  
  325. 18. Why do I get strange values when I check the RecvNext property
  326.     to determine the number of bytes available to be read from the
  327.     socket?
  328.  
  329.     This is a problem that has been found on some Windows Sockets
  330.     implementations where a call to the ioctlsocket() function 
  331.     returns a wildly incorrect value. This problem typically manifests
  332.     itself on non-blocking, unbuffered TCP sockets.
  333.  
  334. 19. I am trying to write a client application, and after the first
  335.     connection, I'm getting an error stating that the address is
  336.     already in use. What am I doing wrong?
  337.  
  338.     You're not setting the LocalPort property to IPPORT_ANY before
  339.     you establish the connection. By default, the LocalPort property
  340.     has a value of zero (which is the same as IPPORT_ANY). What this
  341.     tells the socket library is that you don't care what your local
  342.     port number is, and for the library to assign you an unused port
  343.     number greater than 1024.
  344.     
  345.     After you connect to the server, the LocalPort property is modified
  346.     to reflect the actual port number that was assigned to your socket.
  347.     If, the next time you attempt to connect using that socket, the
  348.     LocalPort property does not have a value of zero, it will attempt to
  349.     use that specific port number, which may result in the error being
  350.     generated. To correct the problem, simply insure that the LocalPort
  351.     property has a value of zero before you attempt the connection.
  352.  
  353. 20. My application needs to broadcast UDP datagrams over the local
  354.     network. How can I do this using SocketWrench?
  355.  
  356.     Refer to the UDPECHO sample program for a generic example of using
  357.     UDP with SocketWrench. In order to broadcast datagrams (that is,
  358.     each machine on the local network will receive the datagram sent
  359.     from your local host), you need to set the Broadcast property to
  360.     True, and set the HostAddress property to the broadcast IP address
  361.     for your network.
  362.  
  363. 21. I'm developing a server application using SocketWrench under
  364.     Windows NT. Everything seems to work well, until I attempt to connect
  365.     to it with a client running on the same local host. Why does it
  366.     seems to slow down considerably at that point?
  367.  
  368.     There is a significant performance penalty when 16-bit and 32-bit
  369.     TCP/IP applications connect to each other on the same local system.
  370.     No doubt this is due to the WOW (Windows on Windows) facility
  371.     used by Windows NT to execute 16-bit applications.
  372.